;:sys36864
	;.opt oo
	*= $c000
vicinit	=65409
strout	=$ab1e
cr	=13
bas	=43
getkey	=65508
end	=45
tmp	=2
tmp2	=4
axout	=$bdcd
stradr	=$22
link	=$a533
latch	=$cf00
latch2	=$ce00
bsout	=$ffd2
nr	=6
konf	=1
oldanf	=$5f
oldend	=$5a
newend	=$58
bltuc	=$a3bf
	jmp fangan
endmerk	.word 0
quot	.byt 0
zeig	.byt 0
temp	.byt 0
code	.byte "adc\xa0asl\xa0bcc\xa0bcs\xa0beq\xa0bmi\xa0bne\xa0bpl\xa0bvc\xa0bvs\xa0"
	.byte "clCclIclVcmp\xa0cpx\xa0cpy\xa0dec\xa0deXdeYinc\xa0"
	.byte "inXinYjmp\xa0jsr\xa0lda\xa0ldx\xa0ldy\xa0lsr\xa0phAphP"
	.byte "plAplPrtIrtSsbc\xa0seCseIsta\xa0stx\xa0"
	.byte "sty\xa0taXtaYtxAtyA,Y,XwritEtmPviCsiDbsouT"
	.byte "pagElatcHtemPnop\xa0strouTspacE"
	.byte "axouTrepeaTcalCbilDfarB.byt\xa0linEirQkeYiniT"
	.byte "finD"
	.byt 0
mask	.byte "\x93\x08\x0e\x12Packer         fuer PROFI-ASS Quelltexte"
	.byte "(c) N.Heusler 110886                    \x05"
	.byt cr
	.byte "     "
	.byt 0
frage	.byte "\x12 P \x92 acken oder \x12 E \x92 ntpacken ?\x11\x11"
	.byt cr,0
nix	.byte "Kein Programm im Speicher !"
	.byt cr,0
zei	.byt cr
	.byte "\x91\x9a     Zeile \x05"
	.byt 0
fangan	jsr vicinit
	lda #<mask
	ldy #>mask
	jsr strout
	ldy #1
	lda (bas),y
	bne intus
	lda #<nix
	ldy #>nix
	jmp strout
intus	lda #<frage
	ldy #>frage
	jsr strout
j	jsr getkey
	cmp #"e"
	beq qentpack
	cmp #"p"
	bne j
	beq pack
qentpack	jmp entpack
pack	jsr parametr
zeile	jsr get
	jsr put
	jsr get
	jsr put
	tax
	bne weiter
	jmp clr
weiter	lda #<zei
	ldy #>zei
	jsr strout
	jsr get
	tax
	jsr put
	jsr get
	jsr put
	jsr axout
	ldx #0
	stx quot
getline	jsr get
	sta latch,x
	inx
	tay
	bne getline
l1	lda latch,y
	beq l4
	cmp #34
	bne l1a
	lda quot
	eor #-1
	sta quot
	lda #34
l1a	bit quot
	bpl l1b
	sty zeig
	jsr put
	ldy zeig
	iny
	bne l1
l1b	ldx #-1
	stx nr
l7	inc nr
	sty zeig
l2	inx
	lda code,x
	beq l3
	sta temp
	and #$7f
	cmp latch,y
	bne l5
	iny
	lda temp
	bpl l2
	dey
	sty zeig
	lda nr
	cmp #50
	bcs zwei
	clc
	adc #204
	bne goon
zwei	pha
	lda #254
	jsr put
	pla
	sec
	sbc #49
	bne goon
l5	dex
l6	inx
	lda code,x
	bpl l6
	ldy zeig
	jmp l7
l3	ldy zeig
	lda latch,y
goon	jsr put
	ldy zeig
	iny
	jmp l1
l4	jsr put
	jmp zeile
parametr	lda end
	ldy end+1
	sta endmerk
	sty endmerk+1
	lda bas
	ldy bas+1
	sta tmp
	sty tmp+1
	sta tmp2
	sty tmp2+1
	rts
get	ldy #0
	lda (tmp),y
	inc tmp
	bne ret
	inc tmp+1
ret	rts
put	ldy #0
	sta (tmp2),y
	inc tmp2
	bne ret
	inc tmp2+1
	rts
clr	jsr link
	lda stradr
	clc
	adc #2
	sta end
	lda stradr+1
	adc #0
	sta end+1
	lda #$19
	sta $16
	lda end
	ldy end+1
	sta $2f
	sty $30
	sta $31
	sty $32
	jsr $a81d
	jsr $ffe7
	jmp $a687
romof	sei
	lda #53
	sta konf
	rts
romon	lda #55
	sta konf
	cli
	rts
entpack	jsr parametr
ezeile	jsr get
	jsr put
	jsr get
	jsr put
	tax
	bne eweiter
	jmp clr
eweiter	lda #<zei
	ldy #>zei
	jsr strout
	jsr get
	tax
	jsr put
	jsr get
	jsr put
	jsr axout
	ldx #0
	stx quot
close	jsr get
	tax
	beq e1
	cmp #34
	bne e2
	lda quot
	eor #-1
	sta quot
	lda #34
e2	bit quot
	bpl e3
e4	jsr put
	jmp close
e1	jsr put
	jmp ezeile
e3	cmp #204
	bcc e4
	cmp #254
	beq ezwei
	bcs e4
	sec
	sbc #204
	jmp e5
ezwei	jsr get
	clc
	adc #49
e5	tax
	ldy #-1
	inx
e6	dex
	beq e7
e8	iny
	lda code,y
	bpl e8
	bmi e6
e7	sty zeig
	jsr insert
	ldy zeig
e9	iny
	lda code,y
	php
	and #$7f
	sty zeig
	jsr put
	ldy zeig
	plp
	bpl e9
	jmp close
insert	lda #0
	sta nr
	lda tmp2
	sta oldanf
	lda tmp2+1
	sta oldanf+1
	lda end
	sta oldend
	lda end+1
	sta oldend+1
ea	iny
	inc nr
	lda code,y
	bpl ea
	lda end
	clc
	adc nr
	sta newend
	sta end
	lda end+1
	adc #0
	sta newend+1
	sta end+1
	jsr bltuc
	lda tmp
	clc
	adc nr
	sta tmp
	lda tmp+1
	adc #0
	sta tmp+1
	rts
